#include "nahkamies.h"
#include "selain.h"
#include "videosoitin.h"
#include "tekstinmuokkaus.h"
#include "kuvanvilautin.h"
#include "sanla.h"
#include "hypnotoad.h"
#include "sudoku.h"
#include "pingpong.h"
#include "matopeli.h"

nahkamies::nahkamies(QWidget *parent) : QMainWindow(parent)
{
    QCoreApplication::setApplicationName("Nahkamies");

    setWindowTitle("Nahkamies");
    setWindowIcon(QIcon(":/ikkunakuva.png"));

    toiminnotmenu = menuBar()->addMenu("&Toiminnot");
    toiminnotmenu->setMinimumWidth(150);

    avaamenu = toiminnotmenu->addMenu("Avaa");
    avaamenu->setStatusTip("Avaa ohjelma");

    suljetabivalinta = new QAction(QString::fromUtf8("S&ulje välilehti"), this);
    suljetabivalinta->setShortcut(tr("Ctrl+W"));
    suljetabivalinta->setStatusTip(QString::fromUtf8("Sulje välilehti"));
    toiminnotmenu->addAction(suljetabivalinta);

    suljevalinta = new QAction("&Sulje", this);
    suljevalinta->setShortcut(tr("Ctrl+Q"));
    suljevalinta->setStatusTip("Sulje ohjelma");

    muuta = menuBar()->addMenu("&Muuta");
    muuta->setMinimumWidth(150);
    aboutvalinta = new QAction(QString::fromUtf8("&Lisätietoja"), this);
    aboutvalinta->setStatusTip(QString::fromUtf8("Lisätietoja ohjelmasta"));
    muuta->addAction(aboutvalinta);

    nettiselain = new QAction("&Nettiselain", this);
    nettiselain->setShortcut(tr("Ctrl+N"));
    nettiselain->setStatusTip("Avaa nettiselain");
    avaamenu->addAction(nettiselain);

    videosoitinvalinta = new QAction("&Videosoitin", this);
    videosoitinvalinta->setShortcut(tr("Ctrl+V"));
    videosoitinvalinta->setStatusTip("Avaa videosoitin");
    avaamenu->addAction(videosoitinvalinta);

    muokkausvalinta = new QAction("&Tekstinmuokkaus", this);
    muokkausvalinta->setShortcut(tr("Ctrl+T"));
    muokkausvalinta->setStatusTip("Avaa tekstinmuokkaus");
    avaamenu->addAction(muokkausvalinta);

    kuvavalinta = new QAction("&Kuvanvilautin", this);
    kuvavalinta->setShortcut(tr("Ctrl+K"));
    kuvavalinta->setStatusTip("Avaa kuvanvilautin");
    avaamenu->addAction(kuvavalinta);

    sanlavalinta = new QAction("&Sanla", this);
    sanlavalinta->setShortcut(tr("Ctrl+S"));
    sanlavalinta->setStatusTip("Avaa sanla");
    avaamenu->addAction(sanlavalinta);

    hypnotoadvalinta = new QAction("&Hypnotoad", this);
    hypnotoadvalinta->setShortcut(tr("Ctrl+H"));
    hypnotoadvalinta->setStatusTip("Avaa hypnotoad");
    avaamenu->addAction(hypnotoadvalinta);

    sudokuvalinta = new QAction("S&udoku", this);
    sudokuvalinta->setShortcut(tr("Ctrl+U"));
    sudokuvalinta->setStatusTip("Avaa sudoku");
    avaamenu->addAction(sudokuvalinta);

    pingpongvalinta = new QAction("&Ping pong", this);
    pingpongvalinta->setShortcut(tr("Ctrl+P"));
    pingpongvalinta->setStatusTip("Avaa ping pong");
    avaamenu->addAction(pingpongvalinta);

    matopelivalinta = new QAction("&Matopeli", this);
    matopelivalinta->setShortcut(tr("Ctrl+M"));
    matopelivalinta->setStatusTip("Avaa matopeli");
    avaamenu->addAction(matopelivalinta);

    toiminnotmenu->addSeparator();
    toiminnotmenu->addAction(suljevalinta);

    statusBar()->showMessage("Tervetuloa!", 5000);

    connect(suljevalinta, SIGNAL(triggered()), this, SLOT(close()));
    connect(suljetabivalinta, SIGNAL(triggered()), this, SLOT(SuljeTab()));
    connect(nettiselain, SIGNAL(triggered()), this, SLOT(AvaaSelain()));
    connect(videosoitinvalinta, SIGNAL(triggered()), this, SLOT(AvaaVideosoitin()));
    connect(aboutvalinta, SIGNAL(triggered()), this, SLOT(About()));
    connect(kuvavalinta, SIGNAL(triggered()), this, SLOT(AvaaKuvanvilautin()));
    connect(muokkausvalinta, SIGNAL(triggered()), this, SLOT(AvaaTekstimuokkain()));
    connect(sanlavalinta, SIGNAL(triggered()), this, SLOT(AvaaSanla()));
    connect(hypnotoadvalinta, SIGNAL(triggered()), this, SLOT(AvaaHypnotoad()));
    connect(sudokuvalinta, SIGNAL(triggered()), this, SLOT(AvaaSudoku()));
    connect(pingpongvalinta, SIGNAL(triggered()), this, SLOT(AvaaPingpong()));
    connect(matopelivalinta, SIGNAL(triggered()), this, SLOT(AvaaMatopeli()));

    valilehdet = new QTabWidget(this);
    valilehdet->setTabsClosable(true);
    valilehdet->setMovable(true);

    connect(valilehdet, SIGNAL(tabCloseRequested(int)), this, SLOT(SuljeTab(int)));

    setCentralWidget(valilehdet);
}

void nahkamies::SuljeTab(int ikkuna)
{
    valilehdet->widget(ikkuna)->deleteLater();
    valilehdet->removeTab(ikkuna);
}

void nahkamies::SuljeTab()
{
     valilehdet->widget(valilehdet->currentIndex())->deleteLater();
     valilehdet->removeTab(valilehdet->currentIndex());
}

void nahkamies::AvaaSelain()
{
    selain *selainwidget = new selain();
    valilehdet->addTab(selainwidget, "Nettiselain");
    valilehdet->setCurrentIndex(valilehdet->count()-1);
}

void nahkamies::AvaaVideosoitin()
{
    videosoitin *videowidget = new videosoitin();
    valilehdet->addTab(videowidget, "Videosoitin");
    valilehdet->setCurrentIndex(valilehdet->count()-1);
}

void nahkamies::AvaaTekstimuokkain()
{
    tekstinmuokkaus *muokkauswidget = new tekstinmuokkaus();
    valilehdet->addTab(muokkauswidget, "Tekstinmuokkaus");
    valilehdet->setCurrentIndex(valilehdet->count()-1);
}

void nahkamies::AvaaKuvanvilautin()
{
    kuvanvilautin *kuvawidget = new kuvanvilautin();
    valilehdet->addTab(kuvawidget, "Kuvanvilautin");
    valilehdet->setCurrentIndex(valilehdet->count()-1);
}

void nahkamies::AvaaSanla()
{
    kirjautuminen *skirjautuminen = new kirjautuminen();
    sanla *sanlawidget = new sanla();

    if(!skirjautuminen->asetustiedosto->exists())
    {
        valilehdet->addTab(skirjautuminen, "Sanla");
        valilehdet->setCurrentIndex(valilehdet->count()-1);

        connect(skirjautuminen->tallenna, SIGNAL(clicked()), this, SLOT(SuljeTab()));
        connect(skirjautuminen->tallenna, SIGNAL(clicked()), this, SLOT(AvaaSanla()));
    }

    if(skirjautuminen->asetustiedosto->exists())
    {
        sanlawidget->YhteydenAlustus();

        valilehdet->addTab(sanlawidget, "Sanla");
        valilehdet->setCurrentIndex(valilehdet->count()-1);

        connect(sanlawidget->sulje, SIGNAL(clicked()), this, SLOT(SuljeTab()));
    }
}

void nahkamies::AvaaHypnotoad()
{

    hypnotoad *hypnotoadwidget = new hypnotoad();
    valilehdet->addTab(hypnotoadwidget, "Hypnotoad");
    valilehdet->setCurrentIndex(valilehdet->count()-1);
}

void nahkamies::AvaaSudoku()
{

    sudoku *sudokuwidget = new sudoku();
    valilehdet->addTab(sudokuwidget, "Sudoku");
    valilehdet->setCurrentIndex(valilehdet->count()-1);
}

void nahkamies::AvaaPingpong()
{
    pingpong *pingpongwidget = new pingpong();
    valilehdet->addTab(pingpongwidget, "Ping Pong");
    valilehdet->setCurrentIndex(valilehdet->count()-1);
}

void nahkamies::AvaaMatopeli()
{
    matopeli *matopeliwidget = new matopeli();
    valilehdet->addTab(matopeliwidget, "Matopeli");
    valilehdet->setCurrentIndex(valilehdet->count()-1);
}

void nahkamies::About()
{
    QMessageBox::about(this, QString::fromUtf8("Lisätietoja Nahkamiehestä"),
    tr("<h2>Nahkamies 0.1.180310a</h2><p>Copyright &copy; 2010 Lauri Mukkala & Salu Tommila</p>"
       "<p>Nahkamies on ohjelma, jolla voit k&auml;ytt&auml;&auml; monenlaisia "
       "sovelluksia samaan aikaan helposti ohjelmaa vaihtamatta.</p>"));
}

nahkamies::~nahkamies()
{

}
